The present invention relates to computer systems; more particularly, the present invention relates to processing three-dimensional graphics.
Computer systems that include an Unified Memory Architecture (UMA) combine the functionality of a main memory subsystem and a graphics local memory subsystem. Computer systems with a UMA are obviously less expensive to manufacture due to the absence of a second memory controller (i.e., the graphics memory controller). Three-dimensional graphics applications in an UMA typically requires the referencing of vertex buffers from the unified memory in order to access a series of vertices included in graphics primitives. Most graphics computer systems access the vertex buffers using inline command streams. However, systems that utilize inline command streams typically need to quote the entire vertex data inside the graphics command stream. However, quoting the entire vertex does not efficiently use memory bandwidth, which is especially critical in a UMA graphics system.
One problem is that whenever a graphics frame is rendered, each vertex must be copied from memory into the graphics command stream, stored in another location in memory, before it is read by a graphics accelerator. Another problem is due to the fact that most vertices are reused since each vertex is part of more than one uniplanar triangle. Therefore, the vertices can be cached for later processing at the graphics accelerator. Therefore, a method and apparatus for accessing a vertex buffer using indirect command streams is desired.